home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / xjewel / help.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-03  |  3.2 KB  |  127 lines

  1. /*
  2. **
  3. **    X11 Jewel By David Cooper and Jose Guterman 05/92
  4. **
  5. */
  6.  
  7. #ifdef VMS
  8. #include <decw$include/Xlib.h>
  9. #include <decw$include/Xutil.h>
  10. #include <decw$include/Xos.h>
  11. #else
  12. #include <X11/Xlib.h>
  13. #include <X11/Xutil.h>
  14. #include <X11/Xos.h>
  15. #endif
  16.  
  17. #include "general.h"
  18. #include "logic.h"
  19. #include "jewel.h"
  20. #include "xhscore.h"
  21. #include "xw.h"
  22.  
  23.  
  24. XFontStruct *SymbolFont;
  25. GC SymbolGC;
  26. XFontStruct *HeaderFont;
  27. GC HeaderGC;
  28. #define SYMBOL_FONT "-adobe-symbol-*-*-*-*-18-*-*-*-*-*-adobe-*"
  29. #define HEADER_FONT "-*-*-bold-r-*-*-24-*-*-*-p-*-iso8859-1"
  30. #define HEADER_LOC_Y 100
  31. #define HELP_LEFT_X 100
  32. #define HELP_RIGHT_X (SCREEN_X - HELP_LEFT_X)
  33. char *HeaderString = "\253\253\253 Keys \273\273\273";
  34.  
  35. #define NUM_HELP 6
  36. static char *HelpStrings[NUM_HELP][3]=
  37.     {
  38.         { "\254", ", j, 4 ",     " Move Block Left", },
  39.         { "\255", ", k, 5 ",     " Rotate Block", },
  40.         { "\256", ", l, 6 ",     " Move Block Right", },
  41.         { "\257", ", Space, 0 ", " Drop Block", },
  42.         { " ", "P, p", " Pause/unPause", },
  43.         { " ", "U, u", " Iconify and Pause", },
  44.     };
  45.  
  46.  
  47. void Expose_Help()
  48.     {
  49.     int i, y;
  50.     XCharStruct Sizes;
  51.     int dir, asc, dsc;
  52.  
  53.     y=HEADER_LOC_Y;
  54.  
  55.     XTextExtents(HeaderFont,HeaderString,strlen(HeaderString),
  56.         &dir,&asc,&dsc,&Sizes);
  57.     XDrawImageString(xw_display, xw_window, HeaderGC,
  58.         (SCREEN_X - (Sizes.width))/2 , y,
  59.         HeaderString, strlen(HeaderString));
  60.  
  61.     for (i=0; i< NUM_HELP; i++)
  62.         {
  63.         int len;
  64.         y+=((HeaderFont->ascent+HeaderFont->descent)*2);
  65.         /* draw keypad */
  66.         len=strlen(HelpStrings[i][0]);
  67.         XTextExtents(SymbolFont,HelpStrings[i][0],len,
  68.             &dir,&asc,&dsc,&Sizes);
  69.         XDrawImageString(xw_display, xw_window, SymbolGC, 
  70.             HELP_LEFT_X, y, HelpStrings[i][0],len);
  71.         /* draw keyboard */
  72.         len=strlen(HelpStrings[i][1]);
  73.         XDrawImageString(xw_display, xw_window, HeaderGC,
  74.             (HELP_LEFT_X + Sizes.width), y, HelpStrings[i][1], len);
  75.         /* draw operations */
  76.         len=strlen(HelpStrings[i][2]);
  77.         XTextExtents(HeaderFont,HelpStrings[i][2],len,
  78.             &dir,&asc,&dsc,&Sizes);
  79.         XDrawImageString(xw_display, xw_window, HeaderGC,
  80.             (HELP_RIGHT_X - Sizes.width), y, HelpStrings[i][2], len);
  81.         }
  82.  
  83.     XTextExtents(VerFont,StartString, strlen(StartString),
  84.         &dir,&asc,&dsc,&Sizes);
  85.     XDrawImageString(xw_display, xw_window, VerGC,
  86.         (SCREEN_X - Sizes.width)/2,
  87.         START_LOC_Y+((VerFont->ascent)*3/2),
  88.         StartString, strlen(StartString));
  89.  
  90.     XDrawImageString(xw_display, xw_window, VerGC, VER_LOC_X,
  91.         VER_LOC_Y+((VerFont->ascent)*3/2),
  92.         VerString, strlen(VerString));
  93.     XFlush(xw_display);
  94.     }
  95.  
  96.  
  97. void Start_Help()
  98.     {
  99.     XClearWindow(xw_display, xw_window);
  100.  
  101.     Expose_Help();
  102.     JewelState=HELP;
  103.     xw_set_timer(10000L);
  104.     }
  105.  
  106. void Init_Help()
  107.     {
  108.     XGCValues gcv;
  109.     unsigned long gcvm;
  110.  
  111.     gcvm=(GCFont | GCGraphicsExposures | GCForeground | GCBackground);
  112.  
  113.     gcv.graphics_exposures=False;
  114.     gcv.foreground=white;
  115.     gcv.background=black;
  116.  
  117.     if ( (SymbolFont=XLoadQueryFont(xw_display,SYMBOL_FONT)) == NULL)
  118.         { xw_fatal("Cannot load SYMBOL font.\n",__LINE__,__FILE__); }
  119.     gcv.font=SymbolFont->fid;
  120.     SymbolGC=XCreateGC(xw_display, xw_window, gcvm, &gcv);
  121.  
  122.     if ( (HeaderFont=XLoadQueryFont(xw_display,HEADER_FONT)) == NULL)
  123.         { xw_fatal("Cannot load HEADER font.\n",__LINE__,__FILE__); }
  124.     gcv.font=HeaderFont->fid;
  125.     HeaderGC=XCreateGC(xw_display, xw_window, gcvm, &gcv);
  126.     }
  127.